package com.yanggu.scala.chapater08.mytrait

object TraitDemo01 {

  def main(args: Array[String]): Unit = {
    //1. trait等于java的接口 + 抽象类
    //2. 由于接口并不是oop中的内容，因此scala中并没有接口，取而代之的是trait(特质)
    //3. 伴生类和伴生对象可以使用extends Trait01。
    //如果既有抽象类又有Trait。可以使用extends 父类 with 特质1 with 特质2
    //如果有多个trait。可以使用class 类名 extends 特质1 with 特质2 with 特质3
    //4. 特质中。可以定义抽象属性、抽象方法、普通方法
    //5. 在scala中Java中的接口可以直接当做trait使用
    new Demo01().sayHello()
    new Demo01().sayHi("张三")
    Demo01.sayHello()
  }

}

trait Trait01 {

//  var age : Int

  def sayHi(name: String): Unit = {
    println("Hi " + name)
  }

  def sayHello()

}

class Demo01 extends Trait01 {
  override def sayHello(): Unit = {
    println("Hello")
  }
}

object Demo01 extends Trait01 {
  override def sayHello(): Unit = {
    println("Hello")
  }
}

